package mx.beans;

import java.util.HashMap;

import mx.bd.BD;

import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class Console {

	private int id;
	private String name;

	/** Mapa de las consolas de la base */
	public static HashMap<String, Console> map;

	/** No modificar las llaves, éstos son los nombres de BD */
	public static final String DEFAULT = new String("DEFAULT");
	public static final String PS3 = new String("Play Station 3");
	public static final String XBox360 = new String("XBox 360");
	public static final String Wii = new String("Wii");
	public static final String PSP = new String("PSP");
	public static final String DS = new String("DS");
	public static final String _3DS = new String("3DS");
	public static final String PS2 = new String("Play Station 2");
	public static final String PSVita = new String("PS Vita");
	public static final String ND = new String("ND");
	public static final String PC = new String("PC");
	public static final String XBOX = new String("XBox");


	/**
	 * Obtiene todas las consolas que encuentre en esa BD
	 * 
	 * @param sqldb
	 *            la BD a obtener los datos
	 * @return 
	 */
	public static void initializeConsole(SQLiteDatabase sqldb) {
		Console.map = new HashMap<String, Console>();
		fillTheMap(sqldb);
	}
	
	private Console(){
		
	}

	/**
	 * Objetos para añadirlos al mapa, solo los obtiene <code>fillTheMap</code>
	 * 
	 * @param id
	 * @param name
	 */
	private Console(int id, String name) {
		this.id = id;
		this.name = name;
	}

	/**
	 * Rellena el mapa con la BD
	 * 
	 * @param sqldb
	 */
	private static void fillTheMap(SQLiteDatabase sqldb) {

		Cursor cursor = sqldb.rawQuery(BD.selectConsoles, null);
		if (cursor.moveToFirst()) {
			do {
				
				int id = cursor.getInt(0);
				String name = cursor.getString(1);

				Console c = new Console(id, name);
				Console.map.put(name, c);
			} while (cursor.moveToNext());
		}

		cursor.close();
	}

	/**
	 * Regresa la consola del mapa, si no encuentra, regresa la
	 * <code>DEFAULT</code>
	 * 
	 * @param key
	 * @return El mismo ejemplar consola
	 */
	public static Console get(String key) {

		Console c = map.get(key);
		return (c == null ? map.get(DEFAULT) : c);
	}

	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name
	 *            the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Console [id=" + id + ", name=" + name + "]";
	}

}
